﻿using IcicleFramework.Entities;
using IcicleFramework.GameServices;
using Microsoft.Xna.Framework;

namespace IcicleFramework.Components.Projectile
{
    /// <summary>
    /// An interface for components that augment objects with the ability to fire projectiles.
    /// </summary>
    public interface IProjectileComponent :IBaseComponent
    {
        IGameObject Projectile { get; set; }

        bool AbleToFire { get; }

        float TimeBetweenShots { get; set; }

        int MaxProjectiles { get; set; }

        int CurrProjectiles { get; }

        Vector2 FiringLocation { get; }

        Vector2 Offset { get; set; }

        float Angle { get; set; }

        void Fire();

        void RegisterProjectileManager(ProjectileManager manager);
    }
}
